package basicas;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

import util.ObjetoSistema;

@Entity
public class Sprint {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int codSprint;
	private String nome;
	private Date dataInicio;
	private Date dataFim;
	@OneToMany(mappedBy = "sprint")
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
	private List<Comentario> comentarios;
	@OneToMany(mappedBy = "sprint")
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
	private List<Aluno> responsaveis;
	private int estimativas;
	private int status;
	@ManyToOne
	@JoinColumn(name = "id", insertable = false, updatable = false)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Projeto projeto;

	public Sprint() {
	}

	public int getCodSprint() {
		return codSprint;
	}

	public void setCodSprint(int codSprint) {
		this.codSprint = codSprint;
	}

	public void setProjeto(Projeto projeto) {
		this.projeto = projeto;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDataInicio() {
		return dataInicio;
	}

	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}

	public Date getDataFim() {
		return dataFim;
	}

	public void setDataFim(Date dataFim) {
		this.dataFim = dataFim;
	}

	public List<Comentario> getComentarios() {
		return comentarios;
	}

	public void setComentarios(List<Comentario> comentarios) {
		this.comentarios = comentarios;
	}

	public List<Aluno> getResponsaveis() {
		return responsaveis;
	}

	public void setResponsaveis(List<Aluno> responsaveis) {
		this.responsaveis = responsaveis;
	}

	public int getEstimativas() {
		return estimativas;
	}

	public void setEstimativas(int estimativas) {
		this.estimativas = estimativas;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	public Projeto getProjeto() {
		return projeto;
	}

	public void setProjetos(Projeto projeto) {
		this.projeto = projeto;
	}

}
